// 导入默认图片
import defaultImg from "@/assets/lazy.gif";
import { useIntersectionObserver } from "@vueuse/core";
export default {
  install(app) {
    app.directive("lazyImg", {
      mounted(el, binding) {
        // el:img dom对象
        // binding.value  图片url地址
        // 使用 vueuse/core 提供的监听 api 对图片 dom 进行监听 正式进入视口才加载
        const { stop } = useIntersectionObserver(
          el,
          ([{ isIntersecting }], observerElement) => {
            if (isIntersecting) {
              el.onerror = function () {
                el.src = defaultImg;
              };
              el.src = binding.value;
              stop();
            }
          }
        );
      },
    });
  },
};
